package com.leetcode.array;

/**
 * 59. 螺旋矩阵 II
 * 给你一个正整数 n ，生成一个包含 1 到 n2 所有元素，且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。
 * 示例 1：
 * 输入：n = 3
 * 输出：[[1,2,3],[8,9,4],[7,6,5]]
 * 示例 2：
 * 输入：n = 1
 * 输出：[[1]]
 * 提示：
 * 1 <= n <= 20
 * @author ymy
 * @date 2021年12月08日 14:52
 */
class Code59 {
    public static void main(String[] args) {
        int k = 3;
        Code59 code = new Code59();
        int[][] ints = code.generateMatrix(k);
        for(int i = 0;i<ints.length;i++){
            for (int j = 0;j<ints[0].length;j++){
                System.out.print(ints[i][j] + ",");
            }
            System.out.println();
        }

    }
    public int[][] generateMatrix(int n) {
        int[][] nums = new int[n][n];
        int total = n*n;
        int count = 1;
        int x = 0;
        int y = 0;
        while (count<=total){
            while (y<n){
                if(nums[x][y] > 0){
                    break;
                }
                nums[x][y++] = count++;
            }
            y--;
            x++;
            while (x<n){
                if(nums[x][y] > 0){
                    break;
                }
                nums[x++][y] = count++;
            }
            x--;
            y--;
            while (y>=0){
                if(nums[x][y] > 0){
                    break;
                }
                nums[x][y--] = count++;
            }
            y++;
            x--;
            while (x>=0){
                if(nums[x][y] > 0){
                    break;
                }
                nums[x--][y] = count++;
            }
            x++;
            y++;
        }
        return nums;
    }
}
